package jdbc.test;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;

public class MysqlJNDIBind {
//	public void 
	public static void main(String[] args) {
		//1)生成一个map对象，配置信息都将存入
		java.util.Properties jndiEnv = new java.util.Properties();//Properties时HashTable的一种，本质时Map
		
		//2)放入配置信息
//		jndiEnv.put(, );
		jndiEnv.setProperty(Context.INITIAL_CONTEXT_FACTORY,       //---------key
	    "com.sun.jndi.fscontext.RefFSContextFactory");  //---------value
		//** ▲指明，生成Context对象所需的工厂类的“包名.类名”信息。
		
		//此时需要打入fscontext.jar
		jndiEnv.setProperty(Context.PROVIDER_URL, "file:\\d:\\temp");  //--------key,value
	     /** 绑定成功后，名字与对象之间绑定的信息会存入一个.bindings文件，该文件将存放在此目录位置。*/
		//3)用配置信息初始化InitialContext对象，并用InitialContext对象生成Context对象。
		try {
			InitialContext iCtx = new InitialContext(jndiEnv);	//生成初始化上下文对象，其构造执行中读取入参配置信息，找到工厂类，生成上下文对象
			Context ctx = iCtx;
			//此时需要打入providerutil.jar
			//4)制作要绑定的目标服务对象
			MysqlConnectionPoolDataSource ds = new MysqlConnectionPoolDataSource();
			//5)用Context对象实现 名字与目标对象的绑定
			ctx.rebind("jdbc/mysql", ds);
			
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
